web browserから任意のデータをdownloadするscript
ブラウザからファイル出力(ダウンロード処理)にあることをほぼそのままmodule化した
一旦Blobを経由し、URL.createObjectURL()でblob URLを作る
code:script.js
export const downloadObject = (object, name = "import.json") => {
// 後始末の自動化
using stack = new DisposableStack();
// download dataを作成
const blob = new Blob(JSON.stringify(object), { type: "octet/stream" });
// download linkを生成
const url = stack.adopt(
URL.createObjectURL(snapshots),
(url) => URL.revokeObjectURL(url),
);
// 隠しa要素を使ってdownloadする
const a = stack.adopt(
document.createElement("a"),
(a) => a.remove(),
);
a.href = url;
a.download = name;
a.style.display = "none";
document.body.append(a);
// downloadを実行
a.click();
};
#2025-08-30 10:07:53 DisposableStackで後始末
#2021-03-01 17:09:50
#2021-01-25 00:22:32